package dao

import (
	"time"
)

// 这是 RecommendNode 的全局公开dao对象，被service层调用!
var RecommendNodeDao = recommendNodeDao{}

// 导航推荐节点
// 这是 recommend_node表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type RecommendNode struct {
	Id        int32     `json:"id" form:"id" db:"id" v:"id"`
	Name      string    `json:"name" form:"name" db:"name" v:"name"`         // 虚拟节点名
	Parent    int32     `json:"parent" form:"parent" db:"parent" v:"parent"` // 父节点id,无父节点时为0
	Nid       int32     `json:"nid" form:"nid" db:"nid" v:"nid"`             // topic_node nid,虚拟节点为0
	Sort      int16     `json:"sort" form:"sort" db:"sort" v:"sort"`         // 节点排序,小的在前面
	CreatedAt time.Time `json:"created_at" form:"created_at" db:"created_at" v:"created_at"`
}

// 注意:这是 RecommendNode 的私有dao对象，只能在dao层内使用!
type recommendNodeDao struct {
	InsertTemplate func(arg RecommendNode) (int64, error)               //插入一条记录
	UpdateTemplate func(arg RecommendNode) (int64, error)               //更新一条记录
	DeleteTemplate func(id int64) (int64, error)                        `arg:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (RecommendNode, error)                `arg:"id"` //根据传入的主键获取一条记录
	List           func(arg RecommendNodeList) ([]RecommendNode, error) //模糊分页查询
}

/*
// 这是 recommend_node 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type RecommendNodePostman struct {
id
name
parent
nid
sort
created_at

}*/

// 这是 recommend_node 表的批量请求参数
type RecommendNodeReq struct {
	List []RecommendNode `json:"list" form:"list"`
}

// 这是 recommendNodeDao.List()方法的请求参数
type RecommendNodeList struct {
	Page
}
